/**    
 * @Description: 博客园地址：https://www.cnblogs.com/zumengjie/      
 * @author: 顶风少年   
 * @date: 2021年4月5日 下午10:30:14
 */
package datang.dtdb.builder;

import java.util.List;

import datang.dtdb.mapping.BoundSql;
import datang.dtdb.mapping.ParameterMapping;
import datang.dtdb.mapping.SqlSource;

public class StaticSqlSource implements SqlSource {

	/**
	 * sql文本
	 */
	private final String sql;

	/**
	 * #{}的属性名
	 */
	private final List<ParameterMapping> parameterMappings;

	/**
	 * 纯文本的SQL，无论是RawSqlSource还是DynamicSqlSource都会最终成为
	 * StaticSqlSource,区别是RawSqlSource再初始化会产生一次。而
	 * DynamicSqlSource会在每次getBoundSql都产生一次
	 */
	public StaticSqlSource(String sql, List<ParameterMapping> parameterMappings) {
		this.sql = sql;
		this.parameterMappings = parameterMappings;
	}

	/**
	 * 将解析好的SQL和入参属性组成BoundSql,供外部调用者使用
	 */
	@Override
	public BoundSql getBoundSql(Object parameterObject) {
		BoundSql boundSql = new BoundSql(sql, parameterMappings);
		return boundSql;
	}

}
